import { getFullImageUrl ,initBaseUrl} from '../../utils/request';
import { initWebSocket } from '../../utils/websocket';

export default {
    name: 'OrderSuccessModal',
    props: {
        visible: {
            type: Boolean,
            default: false
        },
        order: {
            type: Object,
            default: () => ({})
        }
    },
    data() {
        return {
            successOrderData: {}
        };
    },
    
    mounted() {
        console.log('OrderSuccessModal mounted');
        // 初始化WebSocket连接
        initWebSocket();
         initBaseUrl();
        // 注册全局WebSocket消息监听
        uni.$on('websocket-message', this.handleWebSocketMessage);
    },
    beforeUnmount() {
        console.log('OrderSuccessModal beforeUnmount');
        // 移除全局事件监听
        uni.$off('websocket-message', this.handleWebSocketMessage);
    },
    methods: {
        getFullImageUrl,
        handleWebSocketMessage(message) {
            try {
                console.log('OrderSuccessModal收到WebSocket消息:', message);
                // 如果消息已经是对象类型，直接使用
                const parsedMessage = typeof message === 'string' ? JSON.parse(message) : message;
                console.log('解析后的消息:', parsedMessage);

                // 检查是否是订单成功的消息
                if (parsedMessage.type === 'order_success' || parsedMessage.type === 'candidate_selected') {
                    console.log('收到订单成功消息:', parsedMessage);
                    // 存储订单数据
                    this.successOrderData = parsedMessage.data || {};
                    console.log('设置的订单数据:', this.successOrderData);

                    // 触发订单成功事件，传递订单数据给父组件
                    this.$emit('order-success', parsedMessage.data);
                }
            } catch (error) {
                console.error('处理WebSocket消息时出错:', error);
            }
        },
        close() {
            this.$emit('close');
        },
        navigateToLocation() {
            // 如果订单有经纬度信息，可以实现导航功能
            if ((this.order.latitude && this.order.longitude) || (this.successOrderData.latitude && this.successOrderData.longitude)) {
                const latitude = parseFloat(this.order.latitude || this.successOrderData.latitude);
                const longitude = parseFloat(this.order.longitude || this.successOrderData.longitude);
                const address = this.order.address || this.successOrderData.job_address;

                uni.openLocation({
                    latitude: latitude,
                    longitude: longitude,
                    name: address,
                    success: () => {
                        console.log('打开地图成功');
                    },
                    fail: (err) => {
                        console.error('打开地图失败', err);
                    }
                });
            }
        }
    }
};